package supermercadoGrupal;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import DAOs.FacturaDAO;

public class Factura {

	private List<RenglonFactura> renglones;
	private float valor;
	private int numero;
	private Date fecha;
	
	public Factura(int numero, float valor) {

		this.renglones = new ArrayList<RenglonFactura>();
		this.valor = valor;
		this.numero = numero;
	}
	public Factura() {
		
		this.renglones= new ArrayList<RenglonFactura>();
		GregorianCalendar calendario = new GregorianCalendar();
		this.setFecha(calendario.getTime());
	}
	public void addRenglon(RenglonFactura renglon)
	{
		this.renglones.add(renglon);
	}
	public void calcularValor() {
		float valorAcumulado = 0;
		for(RenglonFactura renglon : renglones){
			valorAcumulado += renglon.getValor();
		}
		this.setValor(valorAcumulado);
	}

	public float getValor() {
		this.calcularValor();
		return valor;
	}

	public void setValor(float valor) {
		this.valor = valor;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public List<RenglonFactura> getRenglones() {
		return renglones;
	}

	public void setRenglones(List<RenglonFactura> renglones) {
		this.renglones = renglones;
	}
	public void save() throws SQLException
	{
		FacturaDAO.getInstance().agregar(this);
	}
	public Date getFecha() {
		return fecha;
	}
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	
	static public List<Factura> findByFecha(Date fecha) throws SQLException{
		return FacturaDAO.getInstance().findByFecha(fecha);
	}

	static public Factura findByNumero(int numero) throws SQLException{
		return FacturaDAO.getInstance().findByNumero(numero);
	}
}
